iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0

昨天說到會新增一個按鈕來新增資料,就從這邊說起吧!
首先我們先在navergtionBar的右側新增一按鈕~
在生命週期中加上這行~而後面的selector是指按下按鈕後要做的動作。
我們這樣寫

裡用selector的話我們的func需要用到@objc func來接續。
相信大家都了解alert的寫法。
以及Add的閉包內容都是可讀性高的程式碼。
而saveData才是比較重要的func。

首先,我們再回傳name時要的是字串。
再來我們先寫一整數record = CKRecord(recordType:"自己想名字")
後面這幾行較重要的則是在我儲存資料後的兩秒會去fetch資料來更新tableview。這邊其實就可以儲存資料了,可以將App燒至手機來新增資料看看。
而新增時會發現為什麼Apple資料庫沒有資料呢?
請注意,這邊的self?.fetchItem(),請先改為print("save"),
因為這時func還沒寫好。

這時候就要到左邊目錄Schema的地方點下我們創建的record name後。

點下Add basic Index後,設定成這樣下張圖片。

設定完之後按儲存。

之後再回到Records的地方按下Public Database以及選好自己創建的record type後點選Query Records,這樣就會有資料了~

到了這邊,我們需要撈回我們的資料顯示在tableview上,這邊的predicate為查詢是否有值。接下來就是正常的guard let else。
這邊在主線程的部分加上排序資料以及tableView.reloadData()。
但是在這邊資料只會再新增一筆資料時去撈值,所以我們需要加一UIRefreshControl來更快撈值。

在生命週期中新增一UIRefreshControl,以及將selector寫為新的
objc func。

這邊會看到新的func跟上面的大同小異,就是多了底下這些。

  • tableView.refreshControl?.beginRefreshing()
    tableView.beginUpdates()
    self?.tableView.reloadData()
    self?.tableView.refreshControl?.endRefreshing()
    對沒錯,這邊是在開始撈資料和結束撈資料。這邊寫完就可以再燒至手機重新測試看看!

上一篇
CloudKit-Day3
下一篇
Local Authentication-Day1
系列文
Swift小教室230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言